library(MASS)
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.6     ✔ purrr   0.3.4
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.2     ✔ forcats 0.5.1
── Conflicts ───────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
✖ dplyr::select() masks MASS::select()
library(ggplot2)
library(readr)
library(viridis)
Loading required package: viridisLite
library(ggfortify)
library(bbmle) #For ICtab
Loading required package: stats4

Attaching package: ‘bbmle’

The following object is masked from ‘package:dplyr’:

    slice
library(car)
Loading required package: carData

Attaching package: ‘car’

The following object is masked from ‘package:dplyr’:

    recode

The following object is masked from ‘package:purrr’:

    some
library(emmeans)

 
round_any <- function(x, accuracy, f=round){f(x/ accuracy) * accuracy}
round_any <- function(x, accuracy, f=round){f(x/ accuracy) * accuracy}
trial_types <- c("none","brood","worker","queen","all")

for (t in trial_types){
  bee_param_df <- list.files(path=paste0("hive_data/heat_",t,"/"), full.names = TRUE) %>%
                lapply(read_csv, show_col_types = FALSE) %>%
                bind_rows

  write.csv(bee_param_df,paste0("bee_data_isaac_heat_",t,".csv"),row.names = FALSE)
}
New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:New names:

What these all mean: n = queen cells per hour rb = brood radius rn = necter radius w = total daily honey pph = pollen ratio ph = honey consumption ratio pp = pollen consumption ratio k = consumption probability value

broodMetric = average number of brood surrounding other brood pollenRing = average min distance between honey and brood

brood_bee_param <- read.csv("bee_data_isaac_heat_brood.csv") %>% mutate(type = "Brood") %>% mutate(wha = 0, qha = 0)
worker_bee_param <- read.csv("bee_data_isaac_heat_worker.csv") %>% mutate(type = "Worker") %>% mutate(bhd = 0, qha = 0)
queen_bee_param <- read.csv("bee_data_isaac_heat_queen.csv") %>% mutate(type = "Queen") %>% mutate(bhd = 0, wha = 0)
none_bee_param <- read.csv("bee_data_isaac_heat_none.csv") %>% mutate(type = "None") %>% mutate(bhd = 0,wha = 0, qha = 0)
all_bee_param <- read.csv("bee_data_isaac_heat_all.csv") %>% mutate(type = "All")

bee_heat_param_df <- rbind(brood_bee_param,worker_bee_param) %>% rbind(.,queen_bee_param) %>% rbind(.,all_bee_param) %>% rbind(.,none_bee_param)
ggplot(bee_heat_param_df, aes(x = type, y = pBroodHeat))+
  geom_boxplot()+
  theme_classic()


heat_glm <- glm(pBroodHeat ~ 0 + type, data = bee_heat_param_df)

contrast(emmeans(heat_glm, "type"), "pairwise", adjust = "Tukey")
 contrast       estimate      SE   df t.ratio p.value
 All - Brood     -0.0545 0.00847 3077  -6.429  <.0001
 All - None      -0.4252 0.02545 3077 -16.704  <.0001
 All - Queen     -0.2398 0.00847 3077 -28.298  <.0001
 All - Worker    -0.3607 0.00847 3077 -42.557  <.0001
 Brood - None    -0.3707 0.02530 3077 -14.654  <.0001
 Brood - Queen   -0.1853 0.00799 3077 -23.195  <.0001
 Brood - Worker  -0.3062 0.00799 3077 -38.320  <.0001
 None - Queen     0.1854 0.02530 3077   7.328  <.0001
 None - Worker    0.0645 0.02530 3077   2.550  0.0801
 Queen - Worker  -0.1208 0.00799 3077 -15.125  <.0001

P value adjustment: tukey method for comparing a family of 5 estimates 

ggplot(all_bee_param %>% na.omit(), aes(x = qha, y = bhd, color = pBroodHeat))+
  geom_point()+
  scale_color_viridis()+
  theme_classic()


rounded_all_bee_param <- all_bee_param %>% mutate(rounded_qha = round_any(qha, 0.25),
                                                 rounded_bhd = round_any(bhd, 0.25))

ggplot(rounded_all_bee_param %>% na.omit(), aes(x = rounded_qha, y = rounded_bhd, z = pBroodHeat))+
  geom_contour_filled()+
  theme_classic()

NA
NA

Looking at correlation between heat parameter and brood in the place

ggplot(bee_heat_param_df %>% filter(wha > 0), aes(x = wha, y = pBroodHeat))+
  geom_point()+
  geom_smooth(method = 'glm', formula = 'y ~ x')+
  theme_classic()


cor.test(worker_bee_param$wha,worker_bee_param$pBroodHeat)

    Pearson's product-moment correlation

data:  worker_bee_param$wha and worker_bee_param$pBroodHeat
t = -16.883, df = 798, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.5623235 -0.4600492
sample estimates:
       cor 
-0.5130047 
ggplot(bee_heat_param_df %>% filter(qha > 0), aes(x = qha, y = pBroodHeat))+
  geom_point()+
  geom_smooth(method = 'glm', formula = 'y ~ x')+
  theme_classic()


cor.test(queen_bee_param$qha,queen_bee_param$pBroodHeat)

    Pearson's product-moment correlation

data:  queen_bee_param$qha and queen_bee_param$pBroodHeat
t = -43.92, df = 798, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.8602165 -0.8195107
sample estimates:
       cor 
-0.8410501 

Let’s make some stepwise models! Just with the all data for now so there aren’t so many zeroes


hive_pca <- prcomp(bee_heat_param_df %>% select(-c(...1, trial_n, type, days, n,
                                                   pBrood, pPollen, pHoney, pEmpty,
                                                   pBroodHeat, pPollenHeat, pHoneyHeat, pEmptyHeat,
                                                   broodMetric,pollenRing)),
                   center = TRUE,scale. = TRUE)
summary(hive_pca)
Importance of components:
                          PC1    PC2    PC3    PC4    PC5     PC6     PC7     PC8     PC9    PC10
Standard deviation     1.0451 1.0262 1.0251 1.0155 1.0043 0.99555 0.98359 0.97332 0.97070 0.95701
Proportion of Variance 0.1092 0.1053 0.1051 0.1031 0.1009 0.09911 0.09674 0.09474 0.09423 0.09159
Cumulative Proportion  0.1092 0.2145 0.3196 0.4227 0.5236 0.62271 0.71945 0.81419 0.90841 1.00000
hive_pca$rotation[,1:2]
            PC1         PC2
rb   0.23749120 -0.25007941
rn  -0.25023776  0.32573972
w   -0.19436973 -0.10449372
pph  0.16339429  0.60044243
ph   0.41397553 -0.23493726
pp   0.01451974  0.24816931
k    0.44671832  0.18699667
bhd  0.51924059  0.17018363
wha  0.04183244 -0.52208919
qha -0.41712964  0.08132038
autoplot(hive_pca, colour = "pBroodHeat", loadings = TRUE, loadings.label = TRUE,
         data = bee_heat_param_df)+
  scale_color_viridis()+
  theme_classic()


ggplot(bee_heat_param_df, aes(pPollen, pBroodHeat))+
  geom_point()+
  theme_classic()


ggplot(bee_heat_param_df, aes(wha, pPollen))+
  geom_point()+
  theme_classic()


ggplot(bee_heat_param_df, aes(pph, pp, color = pPollen))+
  geom_point()+
  scale_color_viridis()+
  theme_classic()

heat_brood_glm <- glm(pBroodHeat ~ ., data = all_bee_param %>% dplyr::select(-c(...1, trial_n, type, days, n,
                                                   pBrood, pPollen, pHoney, pEmpty,
                                                   pPollenHeat, pHoneyHeat, pEmptyHeat,
                                                   broodMetric,pollenRing)))

stepped_model <- stepAIC(heat_brood_glm, direction = "both")
Start:  AIC=-1644.08
pBroodHeat ~ rb + rn + w + pph + ph + pp + k + bhd + wha + qha

       Df Deviance     AIC
- wha   1   2.7657 -1646.0
- rb    1   2.7660 -1646.0
- k     1   2.7710 -1644.8
- pph   1   2.7733 -1644.3
<none>      2.7655 -1644.1
- rn    1   2.7757 -1643.7
- w     1   2.7808 -1642.5
- ph    1   2.7828 -1642.1
- pp    1   2.8025 -1637.6
- qha   1   3.6132 -1475.0
- bhd   1   4.1686 -1383.5

Step:  AIC=-1646.02
pBroodHeat ~ rb + rn + w + pph + ph + pp + k + bhd + qha

       Df Deviance     AIC
- rb    1   2.7662 -1647.9
- k     1   2.7711 -1646.8
- pph   1   2.7739 -1646.2
<none>      2.7657 -1646.0
- rn    1   2.7759 -1645.7
- w     1   2.7812 -1644.5
+ wha   1   2.7655 -1644.1
- ph    1   2.7832 -1644.0
- pp    1   2.8028 -1639.5
- qha   1   3.6153 -1476.6
- bhd   1   4.1692 -1385.3

Step:  AIC=-1647.9
pBroodHeat ~ rn + w + pph + ph + pp + k + bhd + qha

       Df Deviance     AIC
- k     1   2.7714 -1648.7
- pph   1   2.7743 -1648.0
<none>      2.7662 -1647.9
- rn    1   2.7764 -1647.5
- w     1   2.7821 -1646.2
+ rb    1   2.7657 -1646.0
- ph    1   2.7833 -1646.0
+ wha   1   2.7660 -1646.0
- pp    1   2.8029 -1641.5
- qha   1   3.6153 -1478.6
- bhd   1   4.1692 -1387.3

Step:  AIC=-1648.71
pBroodHeat ~ rn + w + pph + ph + pp + bhd + qha

       Df Deviance     AIC
<none>      2.7714 -1648.7
- pph   1   2.7802 -1648.7
- rn    1   2.7807 -1648.6
+ k     1   2.7662 -1647.9
- ph    1   2.7879 -1646.9
+ rb    1   2.7711 -1646.8
+ wha   1   2.7713 -1646.7
- w     1   2.7888 -1646.7
- pp    1   2.8093 -1642.0
- qha   1   3.6258 -1478.7
- bhd   1   4.1708 -1389.1
Anova(stepped_model)
Analysis of Deviance Table (Type II tests)

Response: pBroodHeat
    LR Chisq Df Pr(>Chisq)    
rn      2.11  1   0.146522    
w       3.96  1   0.046605 *  
pph     2.00  1   0.157613    
ph      3.77  1   0.052131 .  
pp      8.63  1   0.003303 ** 
bhd   319.12  1  < 2.2e-16 ***
qha   194.83  1  < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ggplot(all_bee_param, aes(bhd, pBroodHeat, color = pBroodHeat))+
  geom_point()+
  scale_color_viridis()+
  theme_classic()


ggplot(all_bee_param, aes(qha, pBroodHeat, color = pBroodHeat))+
  geom_point()+
  scale_color_viridis()+
  theme_classic()

now let’s see about the order of those models


bhd_m <- glm(pBroodHeat ~ bhd, data = all_bee_param)
bhd_2_m <- glm(pBroodHeat ~ poly(bhd,2), data = all_bee_param)
bhd_3_m <- glm(pBroodHeat ~ poly(bhd,3), data = all_bee_param)
bhd_ln_m <- glm(pBroodHeat ~ log(bhd), data = all_bee_param)

ICtab(bhd_m,bhd_2_m,bhd_3_m,bhd_ln_m)
         dAIC df
bhd_2_m   0.0 4 
bhd_3_m   1.3 5 
bhd_ln_m 15.3 3 
bhd_m    43.6 3 
ggplot(all_bee_param, aes(bhd, pBroodHeat, color = pBroodHeat))+
  geom_point()+
  geom_smooth(method = "glm", formula = "y ~ poly(x,2)", se = FALSE) +
  scale_color_viridis()+
  theme_classic()



qha_m <- glm(pBroodHeat ~ qha, data = all_bee_param)
qha_2_m <- glm(pBroodHeat ~ poly(qha,2), data = all_bee_param)
qha_3_m <- glm(pBroodHeat ~ poly(qha,3), data = all_bee_param)
qha_ln_m <- glm(pBroodHeat ~ log(qha), data = all_bee_param)

ICtab(qha_m,qha_2_m,qha_3_m,qha_ln_m)
         dAIC df
qha_m     0.0 3 
qha_3_m   0.3 5 
qha_2_m   1.9 4 
qha_ln_m 31.9 3 
ggplot(all_bee_param, aes(qha, pBroodHeat, color = pBroodHeat))+
  geom_point()+
  geom_smooth(method = "glm", formula = "y ~ x", se = FALSE) +
  scale_color_viridis()+
  theme_classic()

OLDER CODE, looking at model type, we decided on M2 ####

rand_bee_param <- read.csv("bee_data_isaac_rand.csv") %>% mutate(type = "Rand")
m1_bee_param <- read.csv("bee_data_isaac_m1.csv") %>% mutate(type = "M1") %>% select(-trial_n)
m2_bee_param <- read.csv("bee_data_isaac_m2.csv") %>% mutate(type = "M2") %>% select(-trial_n)
m2E_bee_param <- read.csv("bee_data_isaac_m2_empty.csv") %>% mutate(type = "M2E") %>% select(-trial_n)
m2K_bee_param <- read.csv("bee_data_isaac_m2_katie.csv") %>% mutate(type = "M2K") %>% select(-trial_n)

bee_param_df <- rbind(m1_bee_param,m2_bee_param) %>% rbind(.,rand_bee_param) %>% rbind(.,m2E_bee_param) %>% rbind(.,m2K_bee_param)
bee_param_df_perc <- bee_param_df %>% select(c(type,pBrood,pHoney,pPollen,pEmpty)) %>%
                                      pivot_longer(c(pBrood,pHoney,pPollen,pEmpty))

ggplot(bee_param_df, aes(x = broodMetric, y = pollenRing, color = type))+
  geom_point(alpha = 0.25)+
  ylim(0,16)+
  xlim(0,6)+
  theme_classic()

ggplot(bee_param_df_perc, aes(x = type, y = value, fill = name))+
  geom_boxplot()+
  theme_classic()

ggplot(m1_bee_param, aes(x = pPollen, y = pph))+
  geom_point()+
  theme_classic()
broodMetricGLM_m0 <- glm(broodMetric ~ 1, data = m2_bee_param)
broodMetricGLM_m1 <- glm(broodMetric ~ n + rb + rn + w + pph + ph + pp + k, data = m2_bee_param)
broodMetricGLM_step <- step(broodMetricGLM_m0, direction = "both", scope = formula(broodMetricGLM_m1), trace = 0)

summary(broodMetricGLM_step)
pollenRingGLM_m0 <- glm(pollenRing ~ 1, data = m2_bee_param)
pollenRingGLM_m1 <- glm(pollenRing ~ n + rb + rn + w + pph + ph + pp + k, data = m2_bee_param)
pollenRingGLM_step <- step(pollenRingGLM_m0, direction = "both", scope = formula(pollenRingGLM_m1), trace = 0)

summary(pollenRingGLM_step)
queen_pos_df <- read.csv("queen_pos_data_0_5.csv")

queen_pos_df_heatmap <- queen_pos_df %>% mutate(QueenXRound = round_any(QueenX,5),
                                                QueenYRound = round_any(QueenY,5)) %>%
                                        group_by(QueenXRound,QueenYRound) %>%
                                        summarise(meanAngleMoved = mean(AngleMoved),
                                                  count = n())
ggplot(queen_pos_df, aes(x = QueenX, y = QueenY))+
  geom_path()+
  geom_point(aes(x=11,y=48.5),colour="red") +
  scale_color_viridis() +
  theme_classic()

ggplot(queen_pos_df, aes(x = QueenX, y = QueenY, color = Dist2Heat))+
  geom_point()+
  geom_point(aes(x=11,y=48.5),colour="red") +
  scale_color_viridis() +
  theme_classic()

ggplot(queen_pos_df, aes(x = QueenX, y = QueenY, color = cos(AngleOppHeat)))+
  geom_point()+
  geom_point(aes(x=11,y=48.5),colour="red") +
  scale_color_viridis() +
  theme_classic()

ggplot(queen_pos_df, aes(x = QueenX, y = QueenY, color = sin(AngleOppHeat)))+
  geom_point()+
  geom_point(aes(x=11,y=48.5),colour="red") +
  scale_color_viridis() +
  theme_classic()

ggplot(queen_pos_df_heatmap, aes(x = QueenXRound, y = QueenYRound, color = cos(meanAngleMoved)))+
  geom_point(size = 5)+
  geom_point(aes(x=11,y=48.5),colour="red") +
  scale_color_viridis() +
  theme_classic()

ggplot(queen_pos_df_heatmap, aes(x = QueenXRound, y = QueenYRound, color = sin(meanAngleMoved)))+
  geom_point(size = 5)+
  geom_point(aes(x=11,y=48.5),colour="red") +
  scale_color_viridis() +
  theme_classic()

ggplot(queen_pos_df_heatmap, aes(x = QueenXRound, y = QueenYRound, color = count))+
  geom_point(size = 5)+
  geom_point(aes(x=11,y=48.5),colour="red") +
  scale_color_viridis() +
  theme_classic()
LS0tCnRpdGxlOiAiSGl2ZSBQYXJhbWV0ZXIgQW5hbHlzaXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIExvYWQgUGFja2FnZXN9CmxpYnJhcnkoTUFTUykKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShyZWFkcikKbGlicmFyeSh2aXJpZGlzKQpsaWJyYXJ5KGdnZm9ydGlmeSkKbGlicmFyeShiYm1sZSkgI0ZvciBJQ3RhYgpsaWJyYXJ5KGNhcikKbGlicmFyeShlbW1lYW5zKQoKIApyb3VuZF9hbnkgPC0gZnVuY3Rpb24oeCwgYWNjdXJhY3ksIGY9cm91bmQpe2YoeC8gYWNjdXJhY3kpICogYWNjdXJhY3l9CgpgYGAKCmBgYHtyfQpyb3VuZF9hbnkgPC0gZnVuY3Rpb24oeCwgYWNjdXJhY3ksIGY9cm91bmQpe2YoeC8gYWNjdXJhY3kpICogYWNjdXJhY3l9CmBgYAoKCmBgYHtyIFJlYWQgaW4gRGF0YX0KIyB0cmlhbF90eXBlcyA8LSBjKCJub25lIiwiYnJvb2QiLCJ3b3JrZXIiLCJxdWVlbiIsImFsbCIpCgojIGZvciAodCBpbiB0cmlhbF90eXBlcyl7CiMgICBiZWVfcGFyYW1fZGYgPC0gbGlzdC5maWxlcyhwYXRoPXBhc3RlMCgiaGl2ZV9kYXRhL2hlYXRfIix0LCIvIiksIGZ1bGwubmFtZXMgPSBUUlVFKSAlPiUKIyAgICAgICAgICAgICAgICAgbGFwcGx5KHJlYWRfY3N2LCBzaG93X2NvbF90eXBlcyA9IEZBTFNFKSAlPiUKIyAgICAgICAgICAgICAgICAgYmluZF9yb3dzICU+JQojICAgICAgICAgICAgICAgICBtdXRhdGUoZmlsZW5hbWVzID0gbGlzdC5maWxlcyhwYXRoPXBhc3RlMCgiaGl2ZV9kYXRhL2hlYXRfIix0LCIvIiksIGZ1bGwubmFtZXMgPSBUUlVFKSkKIyAKIyAgIHdyaXRlLmNzdihiZWVfcGFyYW1fZGYscGFzdGUwKCJiZWVfZGF0YV9pc2FhY19oZWF0XyIsdCwiLmNzdiIpLHJvdy5uYW1lcyA9IEZBTFNFKQojIH0KCmBgYAoKV2hhdCB0aGVzZSBhbGwgbWVhbjoKbiA9IHF1ZWVuIGNlbGxzIHBlciBob3VyCnJiID0gYnJvb2QgcmFkaXVzCnJuID0gbmVjdGVyIHJhZGl1cwp3ID0gdG90YWwgZGFpbHkgaG9uZXkKcHBoID0gcG9sbGVuIHJhdGlvCnBoID0gaG9uZXkgY29uc3VtcHRpb24gcmF0aW8KcHAgPSBwb2xsZW4gY29uc3VtcHRpb24gcmF0aW8KayA9IGNvbnN1bXB0aW9uIHByb2JhYmlsaXR5IHZhbHVlCgpicm9vZE1ldHJpYyA9IGF2ZXJhZ2UgbnVtYmVyIG9mIGJyb29kIHN1cnJvdW5kaW5nIG90aGVyIGJyb29kCnBvbGxlblJpbmcgPSBhdmVyYWdlIG1pbiBkaXN0YW5jZSBiZXR3ZWVuIGhvbmV5IGFuZCBicm9vZAoKYGBge3J9CmJyb29kX2JlZV9wYXJhbSA8LSByZWFkLmNzdigiYmVlX2RhdGFfaXNhYWNfaGVhdF9icm9vZC5jc3YiKSAlPiUgbXV0YXRlKHR5cGUgPSAiQnJvb2QiKSAlPiUgbXV0YXRlKHdoYSA9IDAsIHFoYSA9IDApCndvcmtlcl9iZWVfcGFyYW0gPC0gcmVhZC5jc3YoImJlZV9kYXRhX2lzYWFjX2hlYXRfd29ya2VyLmNzdiIpICU+JSBtdXRhdGUodHlwZSA9ICJXb3JrZXIiKSAlPiUgbXV0YXRlKGJoZCA9IDAsIHFoYSA9IDApCnF1ZWVuX2JlZV9wYXJhbSA8LSByZWFkLmNzdigiYmVlX2RhdGFfaXNhYWNfaGVhdF9xdWVlbi5jc3YiKSAlPiUgbXV0YXRlKHR5cGUgPSAiUXVlZW4iKSAlPiUgbXV0YXRlKGJoZCA9IDAsIHdoYSA9IDApCm5vbmVfYmVlX3BhcmFtIDwtIHJlYWQuY3N2KCJiZWVfZGF0YV9pc2FhY19oZWF0X25vbmUuY3N2IikgJT4lIG11dGF0ZSh0eXBlID0gIk5vbmUiKSAlPiUgbXV0YXRlKGJoZCA9IDAsd2hhID0gMCwgcWhhID0gMCkKYWxsX2JlZV9wYXJhbSA8LSByZWFkLmNzdigiYmVlX2RhdGFfaXNhYWNfaGVhdF9hbGwuY3N2IikgJT4lIG11dGF0ZSh0eXBlID0gIkFsbCIpCgpiZWVfaGVhdF9wYXJhbV9kZiA8LSByYmluZChicm9vZF9iZWVfcGFyYW0sd29ya2VyX2JlZV9wYXJhbSkgJT4lIHJiaW5kKC4scXVlZW5fYmVlX3BhcmFtKSAlPiUgcmJpbmQoLixhbGxfYmVlX3BhcmFtKSAlPiUgcmJpbmQoLixub25lX2JlZV9wYXJhbSkKYGBgCgoKYGBge3J9CmdncGxvdChiZWVfaGVhdF9wYXJhbV9kZiwgYWVzKHggPSB0eXBlLCB5ID0gcEJyb29kSGVhdCkpKwogIGdlb21fYm94cGxvdCgpKwogIHRoZW1lX2NsYXNzaWMoKQoKaGVhdF9nbG0gPC0gZ2xtKHBCcm9vZEhlYXQgfiAwICsgdHlwZSwgZGF0YSA9IGJlZV9oZWF0X3BhcmFtX2RmKQoKY29udHJhc3QoZW1tZWFucyhoZWF0X2dsbSwgInR5cGUiKSwgInBhaXJ3aXNlIiwgYWRqdXN0ID0gIlR1a2V5IikKCmBgYAoKCmBgYHtyfQoKZ2dwbG90KGFsbF9iZWVfcGFyYW0gJT4lIG5hLm9taXQoKSwgYWVzKHggPSBxaGEsIHkgPSBiaGQsIGNvbG9yID0gcEJyb29kSGVhdCkpKwogIGdlb21fcG9pbnQoKSsKICBzY2FsZV9jb2xvcl92aXJpZGlzKCkrCiAgdGhlbWVfY2xhc3NpYygpCgpyb3VuZGVkX2FsbF9iZWVfcGFyYW0gPC0gYWxsX2JlZV9wYXJhbSAlPiUgbXV0YXRlKHJvdW5kZWRfcWhhID0gcm91bmRfYW55KHFoYSwgMC4yNSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGVkX2JoZCA9IHJvdW5kX2FueShiaGQsIDAuMjUpKQoKZ2dwbG90KHJvdW5kZWRfYWxsX2JlZV9wYXJhbSAlPiUgbmEub21pdCgpLCBhZXMoeCA9IHJvdW5kZWRfcWhhLCB5ID0gcm91bmRlZF9iaGQsIHogPSBwQnJvb2RIZWF0KSkrCiAgZ2VvbV9jb250b3VyX2ZpbGxlZCgpKwogIHRoZW1lX2NsYXNzaWMoKQoKCmBgYAoKCgoKYGBge3J9CgpnZ3Bsb3QoYmVlX2hlYXRfcGFyYW1fZGYgJT4lIG5hLm9taXQoKSwgYWVzKHggPSBicm9vZE1ldHJpYywgeSA9IHBvbGxlblJpbmcsIGNvbG9yID0gcEhvbmV5KSkrCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMSkrCiAgc2NhbGVfY29sb3JfdmlyaWRpcygpKwogIHRoZW1lX2NsYXNzaWMoKQoKbWF4KHBvbGxlblJpbmcpCgpgYGAKCgoKTG9va2luZyBhdCBjb3JyZWxhdGlvbiBiZXR3ZWVuIGhlYXQgcGFyYW1ldGVyIGFuZCBicm9vZCBpbiB0aGUgcGxhY2UKCmBgYHtyfQpnZ3Bsb3QoYmVlX2hlYXRfcGFyYW1fZGYgJT4lIGZpbHRlcih3aGEgPiAwKSwgYWVzKHggPSB3aGEsIHkgPSBwQnJvb2RIZWF0KSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICdnbG0nLCBmb3JtdWxhID0gJ3kgfiB4JykrCiAgdGhlbWVfY2xhc3NpYygpCgpjb3IudGVzdCh3b3JrZXJfYmVlX3BhcmFtJHdoYSx3b3JrZXJfYmVlX3BhcmFtJHBCcm9vZEhlYXQpCgpnZ3Bsb3QoYmVlX2hlYXRfcGFyYW1fZGYgJT4lIGZpbHRlcihxaGEgPiAwKSwgYWVzKHggPSBxaGEsIHkgPSBwQnJvb2RIZWF0KSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICdnbG0nLCBmb3JtdWxhID0gJ3kgfiB4JykrCiAgdGhlbWVfY2xhc3NpYygpCgpjb3IudGVzdChxdWVlbl9iZWVfcGFyYW0kcWhhLHF1ZWVuX2JlZV9wYXJhbSRwQnJvb2RIZWF0KQoKYGBgCgpMZXQncyBtYWtlIHNvbWUgc3RlcHdpc2UgbW9kZWxzISBKdXN0IHdpdGggdGhlIGFsbCBkYXRhIGZvciBub3cgc28gdGhlcmUgYXJlbid0IHNvIG1hbnkgemVyb2VzCgpgYGB7cn0KCmhpdmVfcGNhIDwtIHByY29tcChiZWVfaGVhdF9wYXJhbV9kZiAlPiUgc2VsZWN0KC1jKC4uLjEsIHRyaWFsX24sIHR5cGUsIGRheXMsIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCcm9vZCwgcFBvbGxlbiwgcEhvbmV5LCBwRW1wdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCcm9vZEhlYXQsIHBQb2xsZW5IZWF0LCBwSG9uZXlIZWF0LCBwRW1wdHlIZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm9vZE1ldHJpYyxwb2xsZW5SaW5nKSksCiAgICAgICAgICAgICAgICAgICBjZW50ZXIgPSBUUlVFLHNjYWxlLiA9IFRSVUUpCnN1bW1hcnkoaGl2ZV9wY2EpCmhpdmVfcGNhJHJvdGF0aW9uWywxOjJdCgphdXRvcGxvdChoaXZlX3BjYSwgY29sb3VyID0gInBCcm9vZEhlYXQiLCBsb2FkaW5ncyA9IFRSVUUsIGxvYWRpbmdzLmxhYmVsID0gVFJVRSwKICAgICAgICAgZGF0YSA9IGJlZV9oZWF0X3BhcmFtX2RmKSsKICBzY2FsZV9jb2xvcl92aXJpZGlzKCkrCiAgdGhlbWVfY2xhc3NpYygpCgpnZ3Bsb3QoYmVlX2hlYXRfcGFyYW1fZGYsIGFlcyhwUG9sbGVuLCBwQnJvb2RIZWF0KSkrCiAgZ2VvbV9wb2ludCgpKwogIHRoZW1lX2NsYXNzaWMoKQoKZ2dwbG90KGJlZV9oZWF0X3BhcmFtX2RmLCBhZXMod2hhLCBwUG9sbGVuKSkrCiAgZ2VvbV9wb2ludCgpKwogIHRoZW1lX2NsYXNzaWMoKQoKZ2dwbG90KGJlZV9oZWF0X3BhcmFtX2RmLCBhZXMocHBoLCBwcCwgY29sb3IgPSBwUG9sbGVuKSkrCiAgZ2VvbV9wb2ludCgpKwogIHNjYWxlX2NvbG9yX3ZpcmlkaXMoKSsKICB0aGVtZV9jbGFzc2ljKCkKYGBgCgpgYGB7cn0KaGVhdF9icm9vZF9nbG0gPC0gZ2xtKHBCcm9vZEhlYXQgfiAuLCBkYXRhID0gYWxsX2JlZV9wYXJhbSAlPiUgZHBseXI6OnNlbGVjdCgtYyguLi4xLCB0cmlhbF9uLCB0eXBlLCBkYXlzLCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnJvb2QsIHBQb2xsZW4sIHBIb25leSwgcEVtcHR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUG9sbGVuSGVhdCwgcEhvbmV5SGVhdCwgcEVtcHR5SGVhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJvb2RNZXRyaWMscG9sbGVuUmluZykpKQoKc3RlcHBlZF9tb2RlbCA8LSBzdGVwQUlDKGhlYXRfYnJvb2RfZ2xtLCBkaXJlY3Rpb24gPSAiYm90aCIpCgoKQW5vdmEoc3RlcHBlZF9tb2RlbCkKCmdncGxvdChhbGxfYmVlX3BhcmFtLCBhZXMoYmhkLCBwQnJvb2RIZWF0LCBjb2xvciA9IHBCcm9vZEhlYXQpKSsKICBnZW9tX3BvaW50KCkrCiAgc2NhbGVfY29sb3JfdmlyaWRpcygpKwogIHRoZW1lX2NsYXNzaWMoKQoKZ2dwbG90KGFsbF9iZWVfcGFyYW0sIGFlcyhxaGEsIHBCcm9vZEhlYXQsIGNvbG9yID0gcEJyb29kSGVhdCkpKwogIGdlb21fcG9pbnQoKSsKICBzY2FsZV9jb2xvcl92aXJpZGlzKCkrCiAgdGhlbWVfY2xhc3NpYygpCmBgYAoKbm93IGxldCdzIHNlZSBhYm91dCB0aGUgb3JkZXIgb2YgdGhvc2UgbW9kZWxzCgpgYGB7cn0KCmJoZF9tIDwtIGdsbShwQnJvb2RIZWF0IH4gYmhkLCBkYXRhID0gYWxsX2JlZV9wYXJhbSkKYmhkXzJfbSA8LSBnbG0ocEJyb29kSGVhdCB+IHBvbHkoYmhkLDIpLCBkYXRhID0gYWxsX2JlZV9wYXJhbSkKYmhkXzNfbSA8LSBnbG0ocEJyb29kSGVhdCB+IHBvbHkoYmhkLDMpLCBkYXRhID0gYWxsX2JlZV9wYXJhbSkKYmhkX2xuX20gPC0gZ2xtKHBCcm9vZEhlYXQgfiBsb2coYmhkKSwgZGF0YSA9IGFsbF9iZWVfcGFyYW0pCgpJQ3RhYihiaGRfbSxiaGRfMl9tLGJoZF8zX20sYmhkX2xuX20pCgpnZ3Bsb3QoYWxsX2JlZV9wYXJhbSwgYWVzKGJoZCwgcEJyb29kSGVhdCwgY29sb3IgPSBwQnJvb2RIZWF0KSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLCBmb3JtdWxhID0gInkgfiBwb2x5KHgsMikiLCBzZSA9IEZBTFNFKSArCiAgc2NhbGVfY29sb3JfdmlyaWRpcygpKwogIHRoZW1lX2NsYXNzaWMoKQoKCnFoYV9tIDwtIGdsbShwQnJvb2RIZWF0IH4gcWhhLCBkYXRhID0gYWxsX2JlZV9wYXJhbSkKcWhhXzJfbSA8LSBnbG0ocEJyb29kSGVhdCB+IHBvbHkocWhhLDIpLCBkYXRhID0gYWxsX2JlZV9wYXJhbSkKcWhhXzNfbSA8LSBnbG0ocEJyb29kSGVhdCB+IHBvbHkocWhhLDMpLCBkYXRhID0gYWxsX2JlZV9wYXJhbSkKcWhhX2xuX20gPC0gZ2xtKHBCcm9vZEhlYXQgfiBsb2cocWhhKSwgZGF0YSA9IGFsbF9iZWVfcGFyYW0pCgpJQ3RhYihxaGFfbSxxaGFfMl9tLHFoYV8zX20scWhhX2xuX20pCgpnZ3Bsb3QoYWxsX2JlZV9wYXJhbSwgYWVzKHFoYSwgcEJyb29kSGVhdCwgY29sb3IgPSBwQnJvb2RIZWF0KSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJnbG0iLCBmb3JtdWxhID0gInkgfiB4Iiwgc2UgPSBGQUxTRSkgKwogIHNjYWxlX2NvbG9yX3ZpcmlkaXMoKSsKICB0aGVtZV9jbGFzc2ljKCkKCmBgYAoKCgojIyMjCk9MREVSIENPREUsIGxvb2tpbmcgYXQgbW9kZWwgdHlwZSwgd2UgZGVjaWRlZCBvbiBNMgojIyMjCgoKYGBge3J9CnJhbmRfYmVlX3BhcmFtIDwtIHJlYWQuY3N2KCJiZWVfZGF0YV9pc2FhY19yYW5kLmNzdiIpICU+JSBtdXRhdGUodHlwZSA9ICJSYW5kIikKbTFfYmVlX3BhcmFtIDwtIHJlYWQuY3N2KCJiZWVfZGF0YV9pc2FhY19tMS5jc3YiKSAlPiUgbXV0YXRlKHR5cGUgPSAiTTEiKSAlPiUgc2VsZWN0KC10cmlhbF9uKQptMl9iZWVfcGFyYW0gPC0gcmVhZC5jc3YoImJlZV9kYXRhX2lzYWFjX20yLmNzdiIpICU+JSBtdXRhdGUodHlwZSA9ICJNMiIpICU+JSBzZWxlY3QoLXRyaWFsX24pCm0yRV9iZWVfcGFyYW0gPC0gcmVhZC5jc3YoImJlZV9kYXRhX2lzYWFjX20yX2VtcHR5LmNzdiIpICU+JSBtdXRhdGUodHlwZSA9ICJNMkUiKSAlPiUgc2VsZWN0KC10cmlhbF9uKQptMktfYmVlX3BhcmFtIDwtIHJlYWQuY3N2KCJiZWVfZGF0YV9pc2FhY19tMl9rYXRpZS5jc3YiKSAlPiUgbXV0YXRlKHR5cGUgPSAiTTJLIikgJT4lIHNlbGVjdCgtdHJpYWxfbikKCmJlZV9wYXJhbV9kZiA8LSByYmluZChtMV9iZWVfcGFyYW0sbTJfYmVlX3BhcmFtKSAlPiUgcmJpbmQoLixyYW5kX2JlZV9wYXJhbSkgJT4lIHJiaW5kKC4sbTJFX2JlZV9wYXJhbSkgJT4lIHJiaW5kKC4sbTJLX2JlZV9wYXJhbSkKYGBgCgoKYGBge3J9CmJlZV9wYXJhbV9kZl9wZXJjIDwtIGJlZV9wYXJhbV9kZiAlPiUgc2VsZWN0KGModHlwZSxwQnJvb2QscEhvbmV5LHBQb2xsZW4scEVtcHR5KSkgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl2b3RfbG9uZ2VyKGMocEJyb29kLHBIb25leSxwUG9sbGVuLHBFbXB0eSkpCmBgYAoKCmBgYHtyIE92ZXJhbGwgQnJvb2QgYW5kIFBvbGxlbn0KCmdncGxvdChiZWVfcGFyYW1fZGYsIGFlcyh4ID0gYnJvb2RNZXRyaWMsIHkgPSBwb2xsZW5SaW5nLCBjb2xvciA9IHR5cGUpKSsKICBnZW9tX3BvaW50KGFscGhhID0gMC4yNSkrCiAgeWxpbSgwLDE2KSsKICB4bGltKDAsNikrCiAgdGhlbWVfY2xhc3NpYygpCgpnZ3Bsb3QoYmVlX3BhcmFtX2RmX3BlcmMsIGFlcyh4ID0gdHlwZSwgeSA9IHZhbHVlLCBmaWxsID0gbmFtZSkpKwogIGdlb21fYm94cGxvdCgpKwogIHRoZW1lX2NsYXNzaWMoKQoKZ2dwbG90KG0xX2JlZV9wYXJhbSwgYWVzKHggPSBwUG9sbGVuLCB5ID0gcHBoKSkrCiAgZ2VvbV9wb2ludCgpKwogIHRoZW1lX2NsYXNzaWMoKQoKYGBgCgpgYGB7ciBCcm9vZCBNZXRyaWMgR0xNc30KYnJvb2RNZXRyaWNHTE1fbTAgPC0gZ2xtKGJyb29kTWV0cmljIH4gMSwgZGF0YSA9IG0yX2JlZV9wYXJhbSkKYnJvb2RNZXRyaWNHTE1fbTEgPC0gZ2xtKGJyb29kTWV0cmljIH4gbiArIHJiICsgcm4gKyB3ICsgcHBoICsgcGggKyBwcCArIGssIGRhdGEgPSBtMl9iZWVfcGFyYW0pCmJyb29kTWV0cmljR0xNX3N0ZXAgPC0gc3RlcChicm9vZE1ldHJpY0dMTV9tMCwgZGlyZWN0aW9uID0gImJvdGgiLCBzY29wZSA9IGZvcm11bGEoYnJvb2RNZXRyaWNHTE1fbTEpLCB0cmFjZSA9IDApCgpzdW1tYXJ5KGJyb29kTWV0cmljR0xNX3N0ZXApCmBgYAoKYGBge3IgUG9sbGVuIFJpbmcgR0xNc30KcG9sbGVuUmluZ0dMTV9tMCA8LSBnbG0ocG9sbGVuUmluZyB+IDEsIGRhdGEgPSBtMl9iZWVfcGFyYW0pCnBvbGxlblJpbmdHTE1fbTEgPC0gZ2xtKHBvbGxlblJpbmcgfiBuICsgcmIgKyBybiArIHcgKyBwcGggKyBwaCArIHBwICsgaywgZGF0YSA9IG0yX2JlZV9wYXJhbSkKcG9sbGVuUmluZ0dMTV9zdGVwIDwtIHN0ZXAocG9sbGVuUmluZ0dMTV9tMCwgZGlyZWN0aW9uID0gImJvdGgiLCBzY29wZSA9IGZvcm11bGEocG9sbGVuUmluZ0dMTV9tMSksIHRyYWNlID0gMCkKCnN1bW1hcnkocG9sbGVuUmluZ0dMTV9zdGVwKQpgYGAKCmBgYHtyfQpxdWVlbl9wb3NfZGYgPC0gcmVhZC5jc3YoInF1ZWVuX3Bvc19kYXRhXzBfNS5jc3YiKQoKcXVlZW5fcG9zX2RmX2hlYXRtYXAgPC0gcXVlZW5fcG9zX2RmICU+JSBtdXRhdGUoUXVlZW5YUm91bmQgPSByb3VuZF9hbnkoUXVlZW5YLDUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVlbllSb3VuZCA9IHJvdW5kX2FueShRdWVlblksNSkpICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfYnkoUXVlZW5YUm91bmQsUXVlZW5ZUm91bmQpICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXNlKG1lYW5BbmdsZU1vdmVkID0gbWVhbihBbmdsZU1vdmVkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IG4oKSkKCmBgYAoKCmBgYHtyfQpnZ3Bsb3QocXVlZW5fcG9zX2RmLCBhZXMoeCA9IFF1ZWVuWCwgeSA9IFF1ZWVuWSkpKwogIGdlb21fcGF0aCgpKwogIGdlb21fcG9pbnQoYWVzKHg9MTEseT00OC41KSxjb2xvdXI9InJlZCIpICsKICBzY2FsZV9jb2xvcl92aXJpZGlzKCkgKwogIHRoZW1lX2NsYXNzaWMoKQoKZ2dwbG90KHF1ZWVuX3Bvc19kZiwgYWVzKHggPSBRdWVlblgsIHkgPSBRdWVlblksIGNvbG9yID0gRGlzdDJIZWF0KSkrCiAgZ2VvbV9wb2ludCgpKwogIGdlb21fcG9pbnQoYWVzKHg9MTEseT00OC41KSxjb2xvdXI9InJlZCIpICsKICBzY2FsZV9jb2xvcl92aXJpZGlzKCkgKwogIHRoZW1lX2NsYXNzaWMoKQoKZ2dwbG90KHF1ZWVuX3Bvc19kZiwgYWVzKHggPSBRdWVlblgsIHkgPSBRdWVlblksIGNvbG9yID0gY29zKEFuZ2xlT3BwSGVhdCkpKSsKICBnZW9tX3BvaW50KCkrCiAgZ2VvbV9wb2ludChhZXMoeD0xMSx5PTQ4LjUpLGNvbG91cj0icmVkIikgKwogIHNjYWxlX2NvbG9yX3ZpcmlkaXMoKSArCiAgdGhlbWVfY2xhc3NpYygpCgpnZ3Bsb3QocXVlZW5fcG9zX2RmLCBhZXMoeCA9IFF1ZWVuWCwgeSA9IFF1ZWVuWSwgY29sb3IgPSBzaW4oQW5nbGVPcHBIZWF0KSkpKwogIGdlb21fcG9pbnQoKSsKICBnZW9tX3BvaW50KGFlcyh4PTExLHk9NDguNSksY29sb3VyPSJyZWQiKSArCiAgc2NhbGVfY29sb3JfdmlyaWRpcygpICsKICB0aGVtZV9jbGFzc2ljKCkKCmdncGxvdChxdWVlbl9wb3NfZGZfaGVhdG1hcCwgYWVzKHggPSBRdWVlblhSb3VuZCwgeSA9IFF1ZWVuWVJvdW5kLCBjb2xvciA9IGNvcyhtZWFuQW5nbGVNb3ZlZCkpKSsKICBnZW9tX3BvaW50KHNpemUgPSA1KSsKICBnZW9tX3BvaW50KGFlcyh4PTExLHk9NDguNSksY29sb3VyPSJyZWQiKSArCiAgc2NhbGVfY29sb3JfdmlyaWRpcygpICsKICB0aGVtZV9jbGFzc2ljKCkKCmdncGxvdChxdWVlbl9wb3NfZGZfaGVhdG1hcCwgYWVzKHggPSBRdWVlblhSb3VuZCwgeSA9IFF1ZWVuWVJvdW5kLCBjb2xvciA9IHNpbihtZWFuQW5nbGVNb3ZlZCkpKSsKICBnZW9tX3BvaW50KHNpemUgPSA1KSsKICBnZW9tX3BvaW50KGFlcyh4PTExLHk9NDguNSksY29sb3VyPSJyZWQiKSArCiAgc2NhbGVfY29sb3JfdmlyaWRpcygpICsKICB0aGVtZV9jbGFzc2ljKCkKCmdncGxvdChxdWVlbl9wb3NfZGZfaGVhdG1hcCwgYWVzKHggPSBRdWVlblhSb3VuZCwgeSA9IFF1ZWVuWVJvdW5kLCBjb2xvciA9IGNvdW50KSkrCiAgZ2VvbV9wb2ludChzaXplID0gNSkrCiAgZ2VvbV9wb2ludChhZXMoeD0xMSx5PTQ4LjUpLGNvbG91cj0icmVkIikgKwogIHNjYWxlX2NvbG9yX3ZpcmlkaXMoKSArCiAgdGhlbWVfY2xhc3NpYygpCmBgYAoKCgoK